译:微服务架构10条最佳实践
微服务架构十条最佳实践
原文:https://dzone.com/articles/10-best-practices-for-microservice-architectures
作者: Derek Weeks
译者:ForeverL888
确保你在分布式系统中,努力实现这些微服务的最佳实践,例如监控和REST成熟度。
使用微服务架构可以解决所有的软件架构的问题,对吗?当然,这是不对的。但是,使用微服务架构是有价值的。
Hüseyin Babal 最近发表了一个观点,即微服务架构是无法解决所有的问题的。但是,使用微服务架构是构建现代软件架构的坚实基础。在过去的许多年里,我们都知道维护单体应用而带来的挑战,所以 我们寻找一个新的选择来实现可持续,可扩展,易于集成的软件架构。以最佳实践为基础来实现微服务架构可以大幅度的改善你的软件架构。
Hüseyin 是aurea的首席软件架构师和Kloia的咨询师。他最近的演讲,微服务架构终极指南涵盖了他每天工作的大部分的经验和展现了实现微服务架构的最佳实践。
在他的演讲中,它使用Spring Boot来进行应用开发,Consul作为服务发现,Elasticsearrch 和Kibana作为监控,Docker和Jenkins作为持续交付。演讲中包含了十条最佳实践的代码示例演示。
最佳实践1 -- 尝试达到真正的REST
在意识到REST API的好处之后,我们可以查看上图的Leonard Richardson's 的成熟度模型,对于REST的使用有四个级别的定义。
级别0:使用一个端点来访问软件资源
级别1:使用相同的http方法来访问不同的资源
级别2:使用不用的http方法(例如 GET POST PUT DELETE)来访问不同的资源
级别3:API响应中拥有导航资源,这是真正的REST。
最佳实践2 -- 使用Spring HATEOAS
这个可以帮助你使用可导航的RESTful api接口。
最佳实践3 -- 使用分布式配置
通过这种方式,你不能一次性配置50不同的配置。Consul可以用来保持键/值的配置。
最佳实践4 -- 客户代码生成
Hüseyin 建议“要么使用Swagger来生成任何支持的语言的客户端代码,要么通过注解来使用Feign客户端,以及使用Ribbon进行客户端的负载均衡”。
最佳实践5 -- 持续交付
Hüseyin 使用Docker和Jenkins进行了持续交付的示例演示。
最佳实践6 -- 监控
事实上,监控无处不在。
最佳实践7 -- 日志
Hüseyin 指出大量的Docker 日志驱动。他通过使用GELF(Graylog Extended Log Format)来进行示例演示.
最佳实践8 -- APM
应用性能管理。APM通过搜集额外的详细信息来帮助你解决问题。Hüseyin 表示Zipkin是一个开源产品中的一个可选方案。
最佳实践9 -- 数据聚合到特定的客户端的API网关
最佳实践10 -- 事件订阅和CQRS(命令和查询响应分离)
一个命令可以改变一个对象的状态,但是不会返回数据。一个查询会返回数据,但是不会更改对象的状态。
你可以点击这里看到Hüseyin’s 全部的演讲。他为每一个最佳实践都提供了示例代码和解决方案的演示。
获取更多关于现代架构和DevOps的信息?你可以从All Day DevOps免费观看20场演讲